package com.hhxy.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * 获取工厂对象的工具类
 * 利用了设计模式中的单例模式，单例模式中的饿汉单例模式
 */

public class SqlSessionFactoryUtils {
    //1、定义成员变量，用于获取局部变量的值
    private static SqlSessionFactory sqlSF;
    //2、在静态代码块中获取SqlSessionFactory对象
    static{
        //2.1 定位MyBatis核心配置文件
        String resource = "./mybatis-config.xml";
        try {
            //2.2 加载MyBatis核心配置文件，获取输入流对象
            InputStream is = Resources.getResourceAsStream(resource);
            //2.3 获取SqlSessionFactory对象
            sqlSF = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * get方法，用于外部获取SqlSessionFactory对象
     * @return
     */
    public static SqlSessionFactory getSqlSF() {
        return sqlSF;
    }
}
